home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / catman / p_man / cat3 / complib / sggrqf.z / sggrqf
Text File  |  1996-03-14  |  6KB  |  199 lines

  1.  
  2.  
  3.  
  4. SSSSGGGGGGGGRRRRQQQQFFFF((((3333FFFF))))                                                          SSSSGGGGGGGGRRRRQQQQFFFF((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      SGGRQF - compute a generalized RQ factorization of an M-by-N matrix A and
  10.      a P-by-N matrix B
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE SGGRQF( M, P, N, A, LDA, TAUA, B, LDB, TAUB, WORK, LWORK, INFO
  14.                         )
  15.  
  16.          INTEGER        INFO, LDA, LDB, LWORK, M, N, P
  17.  
  18.          REAL           A( LDA, * ), B( LDB, * ), TAUA( * ), TAUB( * ), WORK(
  19.                         * )
  20.  
  21. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  22.      SGGRQF computes a generalized RQ factorization of an M-by-N matrix A and
  23.      a P-by-N matrix B:
  24.  
  25.                  A = R*Q,        B = Z*T*Q,
  26.  
  27.      where Q is an N-by-N orthogonal matrix, Z is a P-by-P orthogonal matrix,
  28.      and R and T assume one of the forms:
  29.  
  30.      if M <= N,  R = ( 0  R12 ) M,   or if M > N,  R = ( R11 ) M-N,
  31.                       N-M  M                           ( R21 ) N
  32.                                                           N
  33.  
  34.      where R12 or R21 is upper triangular, and
  35.  
  36.      if P >= N,  T = ( T11 ) N  ,   or if P < N,  T = ( T11  T12 ) P,
  37.                      (  0  ) P-N                         P   N-P
  38.                         N
  39.  
  40.      where T11 is upper triangular.
  41.  
  42.      In particular, if B is square and nonsingular, the GRQ factorization of A
  43.      and B implicitly gives the RQ factorization of A*inv(B):
  44.  
  45.                   A*inv(B) = (R*inv(T))*Z'
  46.  
  47.      where inv(B) denotes the inverse of the matrix B, and Z' denotes the
  48.      transpose of the matrix Z.
  49.  
  50.  
  51. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  52.      M       (input) INTEGER
  53.              The number of rows of the matrix A.  M >= 0.
  54.  
  55.      P       (input) INTEGER
  56.              The number of rows of the matrix B.  P >= 0.
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. SSSSGGGGGGGGRRRRQQQQFFFF((((3333FFFF))))                                                          SSSSGGGGGGGGRRRRQQQQFFFF((((3333FFFF))))
  71.  
  72.  
  73.  
  74.      N       (input) INTEGER
  75.              The number of columns of the matrices A and B. N >= 0.
  76.  
  77.      A       (input/output) REAL array, dimension (LDA,N)
  78.              On entry, the M-by-N matrix A.  On exit, if M <= N, the upper
  79.              triangle of the subarray A(1:M,N-M+1:N) contains the M-by-M upper
  80.              triangular matrix R; if M > N, the elements on and above the (M-
  81.              N)-th subdiagonal contain the M-by-N upper trapezoidal matrix R;
  82.              the remaining elements, with the array TAUA, represent the
  83.              orthogonal matrix Q as a product of elementary reflectors (see
  84.              Further Details).
  85.  
  86.      LDA     (input) INTEGER
  87.              The leading dimension of the array A. LDA >= max(1,M).
  88.  
  89.      TAUA    (output) REAL array, dimension (min(M,N))
  90.              The scalar factors of the elementary reflectors which represent
  91.              the orthogonal matrix Q (see Further Details).  B
  92.              (input/output) REAL array, dimension (LDB,N) On entry, the P-by-N
  93.              matrix B.  On exit, the elements on and above the diagonal of the
  94.              array contain the min(P,N)-by-N upper trapezoidal matrix T (T is
  95.              upper triangular if P >= N); the elements below the diagonal,
  96.              with the array TAUB, represent the orthogonal matrix Z as a
  97.              product of elementary reflectors (see Further Details).  LDB
  98.              (input) INTEGER The leading dimension of the array B. LDB >=
  99.              max(1,P).
  100.  
  101.      TAUB    (output) REAL array, dimension (min(P,N))
  102.              The scalar factors of the elementary reflectors which represent
  103.              the orthogonal matrix Z (see Further Details).  WORK
  104.              (workspace/output) REAL array, dimension (LWORK) On exit, if INFO
  105.              = 0, WORK(1) returns the optimal LWORK.
  106.  
  107.      LWORK   (input) INTEGER
  108.              The dimension of the array WORK. LWORK >= max(1,N,M,P).  For
  109.              optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3), where
  110.              NB1 is the optimal blocksize for the RQ factorization of an M-
  111.              by-N matrix, NB2 is the optimal blocksize for the QR
  112.              factorization of a P-by-N matrix, and NB3 is the optimal
  113.              blocksize for a call of SORMRQ.
  114.  
  115.      INFO    (output) INTEGER
  116.              = 0:  successful exit
  117.              < 0:  if INF0= -i, the i-th argument had an illegal value.
  118.  
  119. FFFFUUUURRRRTTTTHHHHEEEERRRR DDDDEEEETTTTAAAAIIIILLLLSSSS
  120.      The matrix Q is represented as a product of elementary reflectors
  121.  
  122.         Q = H(1) H(2) . . . H(k), where k = min(m,n).
  123.  
  124.      Each H(i) has the form
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. SSSSGGGGGGGGRRRRQQQQFFFF((((3333FFFF))))                                                          SSSSGGGGGGGGRRRRQQQQFFFF((((3333FFFF))))
  137.  
  138.  
  139.  
  140.         H(i) = I - taua * v * v'
  141.  
  142.      where taua is a real scalar, and v is a real vector with
  143.      v(n-k+i+1:n) = 0 and v(n-k+i) = 1; v(1:n-k+i-1) is stored on exit in
  144.      A(m-k+i,1:n-k+i-1), and taua in TAUA(i).
  145.      To form Q explicitly, use LAPACK subroutine SORGRQ.
  146.      To use Q to update another matrix, use LAPACK subroutine SORMRQ.
  147.  
  148.      The matrix Z is represented as a product of elementary reflectors
  149.  
  150.         Z = H(1) H(2) . . . H(k), where k = min(p,n).
  151.  
  152.      Each H(i) has the form
  153.  
  154.         H(i) = I - taub * v * v'
  155.  
  156.      where taub is a real scalar, and v is a real vector with
  157.      v(1:i-1) = 0 and v(i) = 1; v(i+1:p) is stored on exit in B(i+1:p,i), and
  158.      taub in TAUB(i).
  159.      To form Z explicitly, use LAPACK subroutine SORGQR.
  160.      To use Z to update another matrix, use LAPACK subroutine SORMQR.
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.